package demo4

// Target 是适配的目标接口
type Target interface{
	Request() string
}
// Adaptee 是被适配的目标接口
type Adaptee interface{
	SpecificRequest() string
}

// NewAdaptee 是被适配的接口工厂函数
func NewAdaptee() Adaptee{
	return &adapteeImpl{}
}

// AdapteeImpl 是被适配的目标类
type adapteeImpl struct{}

// SpecificRequest 是目标类的一个方法
func (a *adapteeImpl)SpecificRequest() string{
	return "adaptee method"
}
// NewAdapter 是Adapter的工厂函数
func NewAdapter(adaptee Adaptee) Target{
	return &adapter{
		Adaptee:adaptee,
	}
}
// Adapter 是转换Adaptee为Target接口的适配器
type adapter struct{
	Adaptee
}
// Request 实现Targe接口o
func(a *adapter)Request()string{
	// 可以增加自己的新功能
	return a.SpecificRequest()
}